1. Field of the Invention
This invention relates to microprocessors, and more particularly, to efficiently reducing the power consumption of register file accesses.
2. Description of the Relevant Art
As time passes, more and more functionality is provided within a given area of on-die real estate of semiconductor processor cores. As a result, mobile devices, such as laptop computers, tablet computers, smart phones, video cameras, and the like, have increasing popularity. Vital issues for these mobile devices include power consumption and battery life.
In semiconductor devices, an appreciable amount of power may be consumed by accesses to a register file that is used to store data values during processing. Generally speaking, an architectural register file increases in size as a processor microarchitecture supports a larger programming data model. One example is a transition from a 32-bit microarchitecture to a 64-bit microarchitecture. The architectural register file may double in width for this design transition. Additionally, various applications may exceed the address space limitations of a 32-bit microarchitecture, which causes the transition to an even larger programming data model. These various applications may include at least database applications, Web search engines, simulation and modeling tools, scientific computing, and so forth.
In addition to the above, a given operating system may support a particular programming data model that determines data type sizes and alignment. For example, integers, long integers, and pointers are some data types with different sizes based on a given programming data model. Therefore, one or more data types may not utilize an entire width of a general-purpose register for an associated data operand. For example, each integer in a 64-bit programming data model may have a data type size of 32 bits. In such an embodiment, only one half of a general-purpose register is needed to store a 32-bit value for the integer data operand. The remaining half of the register remains unused. In some cases, the unused portion of the register may be filled with zeroes. While only a portion of the register is being used to store the data, read and write accesses to the register may continue to access the entire register. Consequently, power consumption may be greater than in necessary.
Another occurrence of the usage of different sized data types is the usage of instruction set extensions. In one example, an embedded processor utilizes an Advanced RISC Machines (ARM) instruction set. In addition, this processor may utilize a Thumb instruction set extension. Thumb instructions may use smaller sized data operands than the ARM instructions. Similar to the above, in cases where a data operand does not have a size matching a full width of a register, read and write operations of the full width of the register may still be performed. For example, when an instruction is a producer for the data operand, a portion of the register may be written with a predetermined value, such as zero. When the instruction is a consumer for the data operand, the full width of the register may still be read. These register file accesses consume power while being unnecessary to perform.
In view of the above, efficient methods and mechanisms for efficiently reducing the power consumption of register file accesses are desired.